CLICK ON IT TO START PLAYING.

let r1 = 90;
let r2 = 90;
let m1 = 20;
let m2 = 20;
let a1 = Math.PI / 2;
let a2 = Math.PI / 2;
let a1_v = 0;
let a2_v = 0;
let g = 1;
let px2 = -1;
let py2 = -1;
let cx, cy;

function setup() {
  createCanvas(400, 400);
  cx = width / 2;
  cy = 100;
  extracanvas = createGraphics(400, 400);
  extracanvas.background(230);
  background(230);
}



function draw() {

  a1_a = (-g * (2 * m1 + m2) * sin(a1) - m2 * g * sin(a1 - 2 * a2) - 2 * sin(a1 - a2) * m2 * (a2_v * a2_v * r2 + a1_v * a1_v * r1 * cos(a1 - a2))) / (r1 * (2 * m1 + m2 - m2 * cos(2 * a1 - 2 * a2)));
  a2_a = (2 * sin(a1 - a2) * (a1_v * a1_v * r1 * (m1 + m2) + g * (m1 + m2) * cos(a1) + a2_v * a2_v * r2 * m2 * cos(a1 - a2))) / (r2 * (2 * m1 + m2 - m2 * cos(2 * a1 - 2 * a2)));

  //a2_a=0;
  ///background(230);
  image(extracanvas, 0, 0);
  //stroke(0);
  //strokeWeight(2);
  translate(cx, cy);
  let x1 = r1 * sin(a1);
  let y1 = r1 * cos(a1);
  let x2 = x1 + r2 * sin(a2);
  let y2 = y1 + r2 * cos(a2);

  line(0, 0, x1, y1);
  fill(0);
  ellipse(x1, y1, m1, m1);
  line(x1, y1, x2, y2);
  fill(0);
  ellipse(x2, y2, m2, m2);
  //a1+=a1_v;
  //a2+=a2_v;
  a1_v += a1_a;
  a2_v += a2_a;
  a1 += a1_v;
  a2 += a2_v;

  extracanvas.beginShape();
  //extracanvas.translate(300,50);
  extracanvas.strokeWeight(1);
  extracanvas.stroke(0);
  if(frameCount > 1) {
    extracanvas.line(px2 + 200, py2 + 100, x2 + 200, y2 + 100);
  }
  extracanvas.endShape();
  //image(extracanvas,0,0);
  px2 = x2;
  py2 = y2;
}